// 部分正则表达式
export const accountRule = 0; // 账号规则设置 0:手机号 1:邮箱
export const phoneRegex = /^1[3-9][0-9]{9}$/;
export const emailRegex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
export const nicknameRegex = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
export const accountRegex = accountRule == 0 ? phoneRegex : emailRegex;
export const passwordRegex = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,18}$/;

export function isExternal(val: string) {
  return /^(https?:|mailto:|tel:)/.test(val)
}

/**
 * 验证账号是否合法
 */
export const validAccount = (val: string): boolean => accountRegex.test(val);

/**
 * 验证手机号是否合法
 */
export const validPhone = (val: string): boolean => phoneRegex.test(val);

/**
 * 校检是否为邮箱
 */
export const validEmail = (val: string): boolean => emailRegex.test(val);

/**
 * 验证昵称是否合法
 */
export const validNickname = (val: string): boolean => nicknameRegex.test(val);

/** 日期格式化 */
// 日期 时间戳转日期(有时间)
export function timeStamp(time) {
  const date = new Date(time * 1000); // 乘以1000将秒转换为毫秒
  const year = date.getFullYear();
  const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 月份从0开始，需要加1，并补齐两位数
  const day = date.getDate().toString().padStart(2, '0'); // 获取日期，并补齐两位数
  const hours = date.getHours().toString().padStart(2, '0'); // 获取小时，并补齐两位数
  const minutes = date.getMinutes().toString().padStart(2, '0'); // 获取分钟，并补齐两位数
  const seconds = date.getSeconds().toString().padStart(2, '0'); // 获取秒，并补齐两位数
  const formattedDateTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  return formattedDateTime;
}
// 时间戳转日期(无时间)
export function time2Date(time) {
  const date = new Date(time * 1000); // 乘以1000将秒转换为毫秒
  const year = date.getFullYear();
  const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 月份从0开始，需要加1，并补齐两位数
  const day = date.getDate().toString().padStart(2, '0'); // 获取日期，并补齐两位数

  const formattedDateTime = `${year}-${month}-${day}`;
  return formattedDateTime;
}
// 日期转时间戳
export function unixTimestamp(time) {
  const dateTimeString = time;
  const unixTimestamp = Math.floor(new Date(dateTimeString.replace(/-/g, '/')).getTime() / 1000);
  return unixTimestamp;
}
